package experiment.e04.code;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/29 16:24
 * @package experiment.e04.code
 * @description
 *  (1) 设计一个矩形类Rectangle，该类包含2个私有实例变量：矩形的长(length)和宽(width)，
 *      它还有一个方法，计算长方形的面积getArea()。在Rectangle类中创建构造方法，初始化类中的各个变量;
 *  (2) 设计一个长方体类Cuboid，该类包含2个私有实例变量：长方体的底面矩形(rectangle)和高(height)，
 *      它还有一个方法，计算长方体的体积getVolume()。在Cuboid类中创建构造方法，初始化类中的各个变量;
 *  (3) 设计一个测试类Test，该类中分别创建类Rectangle和Cuboid的实例，求矩形的面积和长方体的体积。
 */

public class E01 {
    public static void main(String[] args) {
        // 创建一个矩形对象
        Rectangle rectangle = new Rectangle(12, 3);
        System.out.println(rectangle);
        System.out.println(rectangle.getArea());

        // 创建一个长方体对象
        Cuboid cuboid = new Cuboid(rectangle, 4);
        System.out.println(cuboid);
        System.out.println(cuboid.getVolume());
    }
}

/**
 * 矩形类
 */
class Rectangle{
    // 长度
    private double length;
    // 宽度
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }


    /**
     * 获取矩形面积
     * @return
     */
    public double getArea(){
        return width * length;
    }

    @Override
    public String toString() {
        return "Rectangle{" +
                "length=" + length +
                ", width=" + width +
                '}';
    }
}

/**
 * 长方体类
 */
class Cuboid{
    private Rectangle rectangle;
    private double height;

    public Cuboid(Rectangle rectangle, double height) {
        this.rectangle = rectangle;
        this.height = height;
    }

    /**
     * 获取长方体体积
     * @return
     */
    public double getVolume(){
        return rectangle.getArea() *  height;
    }

    @Override
    public String toString() {
        return "Cuboid{" +
                "rectangle=" + rectangle +
                ", height=" + height +
                '}';
    }
}


